/******************************************************************************
 * @File name   :      IMaintainMemberDao.java
 *
 * @Author      :      ANMA
 *
 * @Date        :      Jul 20, 2015
 *
 * @Copyright Notice: 
 * Copyright (c) 2014 DMS, Inc. All  Rights Reserved.
 * This software is published under the terms of the DMS Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * ----------------------------------------------------------------------------
 * Date                         Who         Version         Comments
 * Jul 20, 2015 6:45:51 PM    ANMA      1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.member.dao;

import java.util.List;

import com.cap.bts.crmdp.dealer.member.domain.MemberInfo;
import com.cap.bts.crmdp.dealer.member.dto.MemberQueryDto;
import com.cap.bts.crmdp.dealer.member.dto.MemberResultsDto;
import com.cap.bts.crmdp.dealer.member.dto.WechatMemberQueryDto;
import com.cap.bts.framework.common.dao.IBaseDao;
import com.cap.bts.framework.common.exception.AppException;

public interface IMaintainMemberDao extends IBaseDao<MemberInfo, Long> {

	/**
	 * 根据dto获取List<MemberResultsDto>
	 * @Date        :      2015-7-20
	 * @param dto
	 * @return
	 * @throws AppException
	 */
	
	public List<Object[]> getMemberAndCarPlateByDto(MemberQueryDto dto) throws AppException;

	
	
    
	/**
	 * 根据dto获取List<MemberResultsDto>
	 * @Date        :      2015-7-20
	 * @param dto
	 * @return
	 * @throws AppException
	 */
	
	public List<MemberResultsDto> getMemberByMobilePhoneOrMemberId(MemberQueryDto dto) throws AppException;
	
	/**
	 * @Date        :      2015年8月4日
	 * @param dto
	 * @return
	 * @throws AppException
	 */
	public List<MemberResultsDto> getMemberByCarPlate(MemberQueryDto dto) throws AppException;
	/**
	 * @Date        :      2015年8月5日
	 * @param mobilePhone
	 * @return
	 * @throws AppException
	 */
	public boolean updateMemberNameByMemberResultsDto(MemberResultsDto memberResultsDto) throws AppException;
	/**
	 * @Date        :      2015年8月24日
	 * @param dealerId
	 * @param memberId
	 * @param carId
	 * @return
	 * @throws AppException
	 */
	public int getActivePackageCount(Long dealerId, Long memberId, Long carId) throws AppException;
	/**
	 * @Date        :      2015年9月1日
	 * @param memberResultsDto
	 * @return
	 * @throws AppException
	 */
	public boolean updateMemberMobileByMemberResultsDto(MemberResultsDto memberResultsDto) throws AppException;
	
	/**
	 * getMemberInfoByMarsCustomerId
	 * @param customerId
	 * @return
	 */
	MemberInfo getMemberInfoByMarsInfo(String customerId,String dealerId);
	/**
	 * @Date        :      2015年10月23日
	 * @param dealerId
	 * @return
	 * @throws AppException
	 */
	public List<MemberInfo> getMemberByDealerId(Long dealerId,String marsMemberId) throws AppException;
	
	/**
     * @Date        :      2015年10月23日
     * @param dealerId
     * @return
     * @throws AppException
     */
    public List<MemberInfo> getMemberByMarsInfo(String marsDealerId,String marsMemberId) throws AppException;
    
    /**
     * @Date        :      2015年11月18日
     * @param dealerId
     * @param MemberId
     * @param mobile
     * @return
     * @throws AppException
     */
    public List<MemberInfo> getMemberByDealerIdMemberIdMobilePhone(Long dealerId,String mobile) throws AppException;
    
    
    
    public List<MemberInfo> getMemberByMarsMemberId(String marsMemberId) throws AppException;
    
    /**
     * 获取微信用户
     * @Date        :      2015年11月24日
     * @param dto
     * @return
     * @throws AppException
     */
    public List<Object[]> getWechatMemberOrCarPlateByDto(WechatMemberQueryDto dto) throws AppException;
    
    /**
     * 查询所查询的用户在本门店是否已经注册
     * @Date        :      2015年11月30日
     * @param mobilePhoneOrCarPlate
     * @return
     * @throws AppException
     */
    public List<MemberInfo> checkWechatMemberOrCarPlateByDto(String mobilePhoneOrCarPlate) throws AppException;
    
    /**
     * 获取所有微信用户
     * @Date        :      2015年11月24日
     * @return
     * @throws AppException
     */
    public List<Object[]> getAllWechatMemberOrCarPlateByDto(WechatMemberQueryDto dto) throws AppException;

    /**
     * @param dealerId
     * @param MARSMemberId
     * @return
     * @throws AppException
     */
    public List<MemberInfo> getMemberByDealerIdAndMARSMemberId(Long dealerId,String MARSMemberId) throws AppException;
    
    /**
     * @param dto
     * @return
     * @throws AppException
     */
    public List<MemberResultsDto> getMemberByCarPlateForThisDealer(MemberQueryDto dto) throws AppException;
}
